"""
集合与字典的区别是集合不可重复且无序
"""
# 集合创建有三种方式
set1 = {"hello", "world"}
print(type(set1))
set2 = {s for s in "hello"}
print(set2)
set3 = set("hello")
print(set3)
# 可以使用in 和 not in对元素是否存在进行判断，若想指导所有元素，可以使用迭代
for each in set2:
    print(each)

'''
集合适用于去重
'''
set4 =set([1, 2, 2, 3, 4, 5])
list1 = list(set4)
print(list1)
'''
集合方法：
copy（）方法用于浅拷贝
isdisjoint（）方法可以判断两个集合是否毫不相干
issubset()方法可以判断一个方法是否是另一个的子集<=
issuperset()方法判断是否是另外一个集合的超集>=
union（）方法求并集，支持多参数|
intersection（）方法求交集，支持多参数&
difference（）方法求差集，支持多参数-
symmetric_difference()方法求对称差集，只支持单参数^
运算符两边必须都是集合，方法右边可以是任意可迭代对象
'''
'''
使用set（）创建可变集合，frozenset（）创建不可变集合
以下方法只允许可变集合使用
'''
print(set1)
set1.update("!!!")
print(set1)
'''
以下求集合的方法会直接对原集合进行修改
intersection_update()方法
difference_update()方法
symmetric_difference_update()方法
'''
set1.add("!!!")
print(set1)
# update()方法会对其中的元素使用迭代的方法获取单个元素，而add方法会直接将字符串加入集合
# 删除元素使用remove方法和discard方法两者的区别是当查找不到对应元素时remove会抛出异常，discard会静默处理
# pop方法会随机弹出一个元素
# clear方法会清空集合

"""
字典的键和集合的元素必须是可哈希的，即哈希值在生命周期内不变
利用hash（）函数获取哈希值
可变对象不可哈希如列表
不可变对象可哈希如字符串
"""